const fs = require('fs');
const path = require('path');

// 读取环境变量
const envFile = path.resolve(__dirname, '../.env');
const envDevFile = path.resolve(__dirname, '../.env.development');
const envProdFile = path.resolve(__dirname, '../.env.production');
const envSitFile = path.resolve(__dirname, '../.env.sit');

// 获取当前环境
const env = process.env.NODE_ENV || 'development';

// 读取环境变量文件
function readEnvFile(filePath) {
    if (fs.existsSync(filePath)) {
        const content = fs.readFileSync(filePath, 'utf8');
        const envVars = {};
        content.split('\n').forEach(line => {
            if (line && !line.startsWith('#')) {
                const [key, value] = line.split('=');
                if (key && value) {
                    envVars[key.trim()] = value.trim();
                }
            }
        });
        return envVars;
    }
    return {};
}

// 合并环境变量
const baseEnv = readEnvFile(envFile);
const envSpecific = env === 'production' 
    ? readEnvFile(envProdFile)
    : env === 'sit'
    ? readEnvFile(envSitFile)
    : readEnvFile(envDevFile);

const finalEnv = { ...baseEnv, ...envSpecific };

// 生成环境变量配置
const envConfig = {
    // 公共配置
    title: finalEnv.VUE_APP_TITLE || 'AI Chat Flow',
    version: finalEnv.VUE_APP_VERSION || '1.0.0',
    
    // API 配置
    apiBaseUrl: finalEnv.VUE_APP_API_BASE_URL || 'http://localhost:3000/api',
    wsBaseUrl: finalEnv.VUE_APP_WS_BASE_URL || 'ws://localhost:3000/ws',
    apiTimeout: parseInt(finalEnv.VUE_APP_API_TIMEOUT || '10000', 10),
    apiVersion: finalEnv.VUE_APP_API_VERSION || 'v1',
    
    // 功能开关
    enableMock: finalEnv.VUE_APP_ENABLE_MOCK === 'true',
    enableWsMock: finalEnv.VUE_APP_MOCK_ENABLE_MOCK === 'true',
    enableDebug: finalEnv.VUE_APP_ENABLE_DEBUG === 'true',
    devTools: finalEnv.VUE_APP_DEVTOOLS === 'true'
};

// 生成配置文件内容
const configContent = `// 自动生成的环境变量配置
const env = ${JSON.stringify(envConfig, null, 4)};

export default env;
`;

// 写入配置文件
const configPath = path.resolve(__dirname, '../config/env.js');
fs.writeFileSync(configPath, configContent);

console.log(`Environment configuration generated for ${env} environment`); 